package com.dingqb.ktdemo.oop
/**
 扩展
 **/
class Users {
	init {
		println("init")
		Print();
	}

	fun Users.Print() {
		println("Println() 扩展");
	}
	// 扩展函数 swap,调换不同位置的值


}

fun MutableList<Int>.swap(index1: Int, index2: Int) {
	val tmp = this[index1]     //  this 对应该列表
	this[index1] = this[index2]
	this[index2] = tmp
}

open class C {}
class D : C {
	constructor()

	fun C.foo(): String {
		return "C"
	};
	fun D.foo(): String {
		return "D"
	};
	fun printFoo(c: C) {
		println(c.foo())  // 类型是 C 类
	}


}

fun main(args: Array<String>) {

	//1
//	Users();
	//2
//	val l = mutableListOf(1, 2, 3, 4);
//	l.swap(1, 3);
//	println(l.toString())
	//3
//	D().printFoo(D());
	
}